package threadLearn;

/**
 * 对象锁的第二种形式
 * synchronized修饰对象普通方法，锁对象默认是this
 * @author 12609
 *
 */
public class SynchronizedMethod implements Runnable {
	static SynchronizedMethod instance = new SynchronizedMethod();
	
	@Override
	public synchronized void run() {
		System.out.println("开始 " + Thread.currentThread().getName());
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("" + Thread.currentThread().getName() + " 运行结束");
		
	}

	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new Thread(instance);
		Thread t2 = new Thread(instance);
		t1.start();
		t2.start();
//		t1.join();//把指定的线程加入到当前线程，可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法，直到线程A执行完毕后，才会继续执行线程B。
//		t2.join();
		while(t1.isAlive() || t2.isAlive()) {
			//循环等待
		}
		System.out.println("finished...");
	}

	
}
